home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / Interfaces&Libraries / Universal / Interfaces / CIncludes / QD3DStorage.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  8.1 KB  |  298 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        QD3DStorage.h
  3.  
  4.      Contains:    Abstraction to deal with various types of stream-based storage devices        
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.5.4
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1995-1998 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DSTORAGE__
  18. #define __QD3DSTORAGE__
  19.  
  20. #ifndef __QD3D__
  21. #include <QD3D.h>
  22. #endif
  23.  
  24. #if TARGET_OS_MAC
  25. #ifndef __MACTYPES__
  26. #include <MacTypes.h>
  27. #endif
  28. #ifndef __FILES__
  29. #include <Files.h>
  30. #endif
  31. #endif  /* TARGET_OS_MAC */
  32.  
  33.  
  34. #if TARGET_OS_WIN32
  35.     #include <windows.h>
  36. #endif /* TARGET_OS_WIN32 */
  37.  
  38. #include <stdio.h>
  39.  
  40.  
  41. #if PRAGMA_ONCE
  42. #pragma once
  43. #endif
  44.  
  45. #ifdef __cplusplus
  46. extern "C" {
  47. #endif
  48.  
  49. #if PRAGMA_IMPORT
  50. #pragma import on
  51. #endif
  52.  
  53. #if PRAGMA_STRUCT_ALIGN
  54.     #pragma options align=power
  55. #elif PRAGMA_STRUCT_PACKPUSH
  56.     #pragma pack(push, 2)
  57. #elif PRAGMA_STRUCT_PACK
  58.     #pragma pack(2)
  59. #endif
  60.  
  61. #if PRAGMA_ENUM_ALWAYSINT
  62.     #pragma enumsalwaysint on
  63. #elif PRAGMA_ENUM_OPTIONS
  64.     #pragma option enum=int
  65. #elif PRAGMA_ENUM_PACK
  66.     #if __option(pack_enums)
  67.         #define PRAGMA_ENUM_PACK__QD3DSTORAGE__
  68.     #endif
  69.     #pragma options(!pack_enums)
  70. #endif
  71.  
  72. /******************************************************************************
  73.  **                                                                             **
  74.  **                                Storage Routines                             **
  75.  **                                                                             **
  76.  *****************************************************************************/
  77. EXTERN_API_C( TQ3ObjectType )
  78. Q3Storage_GetType                (TQ3StorageObject         storage);
  79.  
  80. EXTERN_API_C( TQ3Status )
  81. Q3Storage_GetSize                (TQ3StorageObject         storage,
  82.                                  unsigned long *        size);
  83.  
  84. /* 
  85.  *    Reads "dataSize" bytes starting at offset in storage, copying into data. 
  86.  *    sizeRead returns the number of bytes filled in. 
  87.  *    
  88.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeRead
  89.  */
  90. EXTERN_API_C( TQ3Status )
  91. Q3Storage_GetData                (TQ3StorageObject         storage,
  92.                                  unsigned long             offset,
  93.                                  unsigned long             dataSize,
  94.                                  unsigned char *        data,
  95.                                  unsigned long *        sizeRead);
  96.  
  97. /* 
  98.  *    Write "dataSize" bytes starting at offset in storage, copying from data. 
  99.  *    sizeWritten returns the number of bytes filled in. 
  100.  *    
  101.  *    You may assume if *sizeRead < dataSize, then EOF is at offset + *sizeWritten
  102.  */
  103. EXTERN_API_C( TQ3Status )
  104. Q3Storage_SetData                (TQ3StorageObject         storage,
  105.                                  unsigned long             offset,
  106.                                  unsigned long             dataSize,
  107.                                  const unsigned char *    data,
  108.                                  unsigned long *        sizeWritten);
  109.  
  110. /******************************************************************************
  111.  **                                                                             **
  112.  **                             Memory Storage Prototypes                         **
  113.  **                                                                             **
  114.  *****************************************************************************/
  115. EXTERN_API_C( TQ3ObjectType )
  116. Q3MemoryStorage_GetType            (TQ3StorageObject         storage);
  117.  
  118. /*
  119.  * These calls COPY the buffer into QD3D space
  120.  */
  121. EXTERN_API_C( TQ3StorageObject )
  122. Q3MemoryStorage_New                (const unsigned char *    buffer,
  123.                                  unsigned long             validSize);
  124.  
  125. EXTERN_API_C( TQ3Status )
  126. Q3MemoryStorage_Set                (TQ3StorageObject         storage,
  127.                                  const unsigned char *    buffer,
  128.                                  unsigned long             validSize);
  129.  
  130. /*
  131.  * These calls use the pointer given - you must dispose it when you're through
  132.  */
  133. EXTERN_API_C( TQ3StorageObject )
  134. Q3MemoryStorage_NewBuffer        (unsigned char *        buffer,
  135.                                  unsigned long             validSize,
  136.                                  unsigned long             bufferSize);
  137.  
  138. EXTERN_API_C( TQ3Status )
  139. Q3MemoryStorage_SetBuffer        (TQ3StorageObject         storage,
  140.                                  unsigned char *        buffer,
  141.                                  unsigned long             validSize,
  142.                                  unsigned long             bufferSize);
  143.  
  144. EXTERN_API_C( TQ3Status )
  145. Q3MemoryStorage_GetBuffer        (TQ3StorageObject         storage,
  146.                                  unsigned char **        buffer,
  147.                                  unsigned long *        validSize,
  148.                                  unsigned long *        bufferSize);
  149.  
  150. #if TARGET_OS_MAC
  151. /******************************************************************************
  152.  **                                                                             **
  153.  **                                Macintosh Handles Prototypes                 **
  154.  **                                                                             **
  155.  *****************************************************************************/
  156. /* Handle Storage is a subclass of Memory Storage */
  157. EXTERN_API_C( TQ3StorageObject )
  158. Q3HandleStorage_New                (Handle                 handle,
  159.                                  unsigned long             validSize);
  160.  
  161. EXTERN_API_C( TQ3Status )
  162. Q3HandleStorage_Set                (TQ3StorageObject         storage,
  163.                                  Handle                 handle,
  164.                                  unsigned long             validSize);
  165.  
  166. EXTERN_API_C( TQ3Status )
  167. Q3HandleStorage_Get                (TQ3StorageObject         storage,
  168.                                  Handle *                handle,
  169.                                  unsigned long *        validSize);
  170.  
  171. /******************************************************************************
  172.  **                                                                             **
  173.  **                                Macintosh Storage Prototypes                 **
  174.  **                                                                             **
  175.  *****************************************************************************/
  176. EXTERN_API_C( TQ3StorageObject )
  177. Q3MacintoshStorage_New            (short                     fsRefNum);
  178.  
  179. /* Note: This storage is assumed open */
  180. EXTERN_API_C( TQ3Status )
  181. Q3MacintoshStorage_Set            (TQ3StorageObject         storage,
  182.                                  short                     fsRefNum);
  183.  
  184. EXTERN_API_C( TQ3Status )
  185. Q3MacintoshStorage_Get            (TQ3StorageObject         storage,
  186.                                  short *                fsRefNum);
  187.  
  188. EXTERN_API_C( TQ3ObjectType )
  189. Q3MacintoshStorage_GetType        (TQ3StorageObject         storage);
  190.  
  191.  
  192. /******************************************************************************
  193.  **                                                                             **
  194.  **                            Macintosh FSSpec Storage Prototypes                 **
  195.  **                                                                             **
  196.  *****************************************************************************/
  197. EXTERN_API_C( TQ3StorageObject )
  198. Q3FSSpecStorage_New                (const FSSpec *            fs);
  199.  
  200. EXTERN_API_C( TQ3Status )
  201. Q3FSSpecStorage_Set                (TQ3StorageObject         storage,
  202.                                  const FSSpec *            fs);
  203.  
  204. EXTERN_API_C( TQ3Status )
  205. Q3FSSpecStorage_Get                (TQ3StorageObject         storage,
  206.                                  FSSpec *                fs);
  207.  
  208. #endif  /* TARGET_OS_MAC */
  209.  
  210. #if TARGET_OS_WIN32
  211. /******************************************************************************
  212.  **                                                                             **
  213.  **                            Win32 HANDLE Storage Prototypes                     **
  214.  **                                                                             **
  215.  *****************************************************************************/
  216. EXTERN_API_C( TQ3StorageObject )
  217. Q3Win32Storage_New                (HANDLE                 hFile);
  218.  
  219. EXTERN_API_C( TQ3Status )
  220. Q3Win32Storage_Set                (TQ3StorageObject         storage,
  221.                                  HANDLE                 hFile);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3Win32Storage_Get                (TQ3StorageObject         storage,
  225.                                  HANDLE *                hFile);
  226.  
  227. #endif  /* TARGET_OS_WIN32 */
  228.  
  229.  
  230. /******************************************************************************
  231.  **                                                                             **
  232.  **                                    Unix Prototypes                             **
  233.  **                                                                             **
  234.  *****************************************************************************/
  235. EXTERN_API_C( TQ3StorageObject )
  236. Q3UnixStorage_New                (FILE *                    storage);
  237.  
  238. EXTERN_API_C( TQ3Status )
  239. Q3UnixStorage_Set                (TQ3StorageObject         storage,
  240.                                  FILE *                    stdFile);
  241.  
  242. EXTERN_API_C( TQ3Status )
  243. Q3UnixStorage_Get                (TQ3StorageObject         storage,
  244.                                  FILE **                stdFile);
  245.  
  246. EXTERN_API_C( TQ3ObjectType )
  247. Q3UnixStorage_GetType            (TQ3StorageObject         storage);
  248.  
  249. /******************************************************************************
  250.  **                                                                             **
  251.  **                                Unix Path Prototypes                         **
  252.  **                                                                             **
  253.  *****************************************************************************/
  254. EXTERN_API_C( TQ3StorageObject )
  255. Q3UnixPathStorage_New            (const char *            pathName);
  256.  
  257. /* C string */
  258. EXTERN_API_C( TQ3Status )
  259. Q3UnixPathStorage_Set            (TQ3StorageObject         storage,
  260.                                  const char *            pathName);
  261.  
  262. /* C string */
  263. EXTERN_API_C( TQ3Status )
  264. Q3UnixPathStorage_Get            (TQ3StorageObject         storage,
  265.                                  char *                    pathName);
  266.  
  267. /* pathName is a buffer */
  268.  
  269.  
  270. #if PRAGMA_ENUM_ALWAYSINT
  271.     #pragma enumsalwaysint reset
  272. #elif PRAGMA_ENUM_OPTIONS
  273.     #pragma option enum=reset
  274. #elif defined(PRAGMA_ENUM_PACK__QD3DSTORAGE__)
  275.     #pragma options(pack_enums)
  276. #endif
  277.  
  278. #if PRAGMA_STRUCT_ALIGN
  279.     #pragma options align=reset
  280. #elif PRAGMA_STRUCT_PACKPUSH
  281.     #pragma pack(pop)
  282. #elif PRAGMA_STRUCT_PACK
  283.     #pragma pack()
  284. #endif
  285.  
  286. #ifdef PRAGMA_IMPORT_OFF
  287. #pragma import off
  288. #elif PRAGMA_IMPORT
  289. #pragma import reset
  290. #endif
  291.  
  292. #ifdef __cplusplus
  293. }
  294. #endif
  295.  
  296. #endif /* __QD3DSTORAGE__ */
  297.  
  298.